import java.util.ArrayList;
import java.util.Arrays;

/**
 * @Description
 * @Author zhaobaolin
 * @Date 2018/10/23
 */
public class ArrayListTest {

    public static void main(String[] args) {
        //create();
        handle();
    }

    /**
     * 创建
     */
    private static void create(){
        ArrayList a1 = new ArrayList<>();//不限存储类型 啥都能往里塞
        ArrayList<String> a2 = new ArrayList<>();//只能存储String类型
        ArrayList<Integer> a3 = new ArrayList<>(Arrays.asList(2,4,5));//将一个Collection集合初始化成ArrayList
        ArrayList<Integer> a4 = new ArrayList<>(10);//指定初始化大小
    }

    /**
     * 一般操作
     */
    private static void handle(){
        ArrayList<String> a1 = new ArrayList<>();
        System.out.println(a1.toString()+" 集合长度是："+a1.size());//output：[] 数组长度是：0

        a1.add("a");
        a1.add("c");
        a1.add(1,"b");//指定插入位置
        System.out.println(a1.toString()+" 集合长度是："+a1.size());//output：[a, b, c] 数组长度是：3

        a1.addAll(Arrays.asList("d","e","f"));//插入一个数组
        System.out.println(a1.toString()+" 集合长度是："+a1.size());//output：[a, b, c, d, e, f] 数组长度是：6

        a1.remove("a");//移除对象
        a1.remove(1);//移除该索引的对象
        System.out.println(a1.toString()+" 集合长度是："+a1.size());//output：[b, d, e, f] 数组长度是：4

        //可以看出  a1一开始是空的，随着数据的插入，a1的长度在自动增长，随着数据的移除，a1的长度在自动减小。
        //移除a对象后，b的索引就变成了0，所以移除索引1的对象实际上是移除了c

        //ArrayList转数组
        String a2[] = new String[a1.size()];
        a2 = a1.toArray(a2);

        for(String a : a2){
            System.out.print(" 遍历数组"+a);
        }
        //output：遍历数组b 遍历数组d 遍历数组e 遍历数组f

    }

}
